<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 闭包：两个函数嵌套在一起，使得一个函数可以访问另一个函数的变量

        var a = 123  // 全局变量 

         function test(){
            console.log(a);  // 可以访问到
            var b = 456 // 局部变量
         }
         test()
        //  console.log(b); // 报错  b is not defined 
        
        // 闭包的应用：使得我们封装的函数更加的完善
        // 封装的函数实现了，可以连续打印5此字符串123出来
         function test(){
            let i = 1;
            return function a(){
                i++;
                console.log("123");
                if(i<=5){
                    a()
                }
            }
         }
         let aa = test()
         aa()



    </script>
</body>
</html>